"""
查询省的信息
sql: select  * from tb_areas where parent_id is null;

django orm:
Area.objects.filter(parent=None)
Area.objects.filter(parent_id__isnull=True)
Area.objects.filter(parent__isnull=True)

查询市的信息
sql: select  * from tb_areas where parent_id=130000;

django orm: 
Area.objects.filter(parent=130000)
Area.objects.filter(parent_id=130000)

# 通过 id 为 130000 从 Area 模型中获取对应的省份对象
province = Area.objects.get(id=130000)
# 获取该省份下的所有市级行政区划对象
province.subs.all()

# 将该省份下的所有市级行政区划对象赋值给变量 citys
citys = province.subs.all()
# 遍历所有市级行政区划对象
for city in citys:
    # 打印当前市级行政区划的名称
    print(city.name)
    # 获取当前市级行政区划下的所有区县级行政区划对象
    city.subs.all()
    # 遍历当前市级行政区划下的所有区县级行政区划对象
    for area in city.subs.all():
        # 打印当前区县级行政区划的名称
        print(area.name)


查询区县的信息
sql: select  * from tb_areas where parent_id=130100;
django orm: 
Area.objects.filter(parent=130100)
Area.objects.filter(parent_id=130100)
Area.objects.filter(parent__id=130100)



"""


from django.db import models

class Area(models.Model):
    """省市区"""
    name = models.CharField(max_length=20, verbose_name='名称')
    parent = models.ForeignKey('self', on_delete=models.SET_NULL, related_name='subs', null=True, blank=True, verbose_name='上级行政区划')
    # related_name是关联模型的名字
    # 默认是 模型名小写_set 如areas_set
    # 可以通过修改related_name 为 subs 来修改关联模型名
    class Meta:
        db_table = 'tb_areas'
        verbose_name = '省市区'
        verbose_name_plural = '省市区'

    def __str__(self):
        return self.name
    
